package result;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * @projectName: TwoProject
 * @package: com.buba.project.pojo
 * @className: R
 * @author: Eric
 * @description: TODO
 * @date: 2022/7/29 11:25
 * @version: 1.0
 */
@Data
public class R {
    private Boolean success;

    private Integer code;       //状态吗

    private String message;     //是否成功和失败

    private Map<String,Object> data = new HashMap<String,Object>();
                    //具体数据
//          把类的构造方法私有化，私有化的话，再使用这个类是不能使用的，也就是不能new的
    private R(){}

//    那不能new就写两个
    public static R ok(){
        R r = new R();      //因为是在自己的类里new的自己是可以new的，但是别人new不了的
        r.setSuccess(true);
        r.setCode(20000);
        r.setMessage("成功");
        return r;
    }
    public static R error(){
        R r = new R();      //因为是在自己的类里new的自己是可以new的，但是别人new不了的
        r.setSuccess(false);
        r.setCode(20001);
        r.setMessage("失败");
        return r;
    }

    public static R error(Integer code){
        R r = new R();      //因为是在自己的类里new的自己是可以new的，但是别人new不了的
        r.setSuccess(false);
        r.setCode(code);
        r.setMessage("失败");
        return r;
    }
    //this:: 谁来调用我，我就代表谁
    //有什么用呢？    -    为了使用链式编程
//链式编程原理就是每个操作完成后都返回一个this对象，就是返回对象本身。将多个操作通过点号"."链接在一起成为一个整体
    public R success(Boolean success){
        this.setSuccess(success);
        return this;
    }
    public R message(String message){
        this.setMessage(message);
        return this;
    }
    public R code(Integer code){
        this.setCode(code);
        return this;
    }
    public R data(String key, Object value){
        this.data.put(key, value);
        return this;
    }
    public R data(Map<String, Object> map){
        this.setData(map);
        return this;
    }
}
